package com.spice.common.model;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.spice.common.util.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.PastOrPresent;
import java.io.Serializable;
import java.util.Date;

/**
 * @author houyi
 * @date 2020/5/18 13:53
 * Description:
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 在阿里巴巴开发手册中规定:
     * 【强制】 表必备三字段： id, create_time, update_time。
     * 说明： 其中 id 必为主键，类型为 bigint unsigned、单表时自增、步长为 1。
     * create_time, update_time的类型均为 datetime 类型。
     */
    @ExcelIgnore
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 使用mybatis-plus的自动填充功能，还会配置一个MyMetaObjectHandler
     */
    @ExcelIgnore
    @PastOrPresent
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private String createTime;

    @ExcelIgnore
    @PastOrPresent
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateTime;

    public BaseEntity cleanup(){
        this.id = null;
        this.createTime = null;
        this.updateTime = null;
        return this;
    }

}